<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>相等运算符</title>
</head>
<body>
    
</body>
</html>
<script>
    /*
        相等运算符用来比较两个值是否相等
            如果两个值相等返回true，否则返回false
        == 相等运算
            - 当使用==来比较两个值时，如果值的类型不同
                则会自动进行类型转换，将其转换为相同类型
                然后在比较
        !=  不相等 
            不相等用来判断两个值是否不相等，如果不相等返回true，相等返回false
            - 使用 != 来做不相等运算
            - 不相等也会对变量进行自动的类型转换，如果转换后相等也会返回false
        
        === 
            全等
                - 用来判断两个值是否全等，他和相等类似，不同的是它不会自动的做类型转换
                    如果两个值的类型不同，直接返回false

        !==
            不全等
                - 用来判断两个值是否不全等，和不等类似，不同的是他不会做自动类型转换
                    如果两个值的类型不同，直接返回true
    */

    console.log( 1 == 1);   //true
    let a = 10;

    console.log( a == 4 );  //false

    console.log("1"==1);    //true
    console.log( true=="1");//true
    console.log(true == "hello"); //false
    console.log(null == 0);     //false
    /*
        undefined 衍生自null
            所以这两个值做相等判断时，会返回true
        console.log(undefined == null);//true
    */

    /*
        NaN不和任何值相等，包括它本身
        console.log( NaN == NaN ); //false
    */

    var b = NaN;

    //判断 b 的值是否是NaN
    //console.log(b == NaN); 错误方法，因为NaN和任何值做相等运算，结果都是false

    /*
        可以通过isNaN()函数判断一个值是否是NaN
            如果该值是 NaN 返回true，否则返回false
    */
    var c = NaN;
    if(isNaN(c)){
        //c = NaN 为true ，c != NaN 为false ;
        alert('c是否是NaN');
    }
    console.log(isNaN(b));
    // ================ 不相等
    console.log("==================");
    console.log(10 != 5);   //true
    console.log(10 != 10);  //false
    console.log("abcd" != "abcd"); //false
    console.log("1" != 1);  //false
    // ================ 全等
    console.log("==================");
    console.log("123" === 123); //false
    console.log(null === undefined);    //false  相等== 但不全等===
    console.log(NaN === NaN); //false
    // ================= 不全等
    console.log("==================")
    console.log(1 !== "1");     //true
    console.log(1 !== 1);       //false
    console.log(null !== undefined);    //true  
    console.log(NaN !== NaN);       //true

</script>   